const { defineConfig } = require('@vue/cli-service')

const isProd = process.env.NODE_ENV === 'production'
const isLib = false

module.exports = defineConfig({
  runtimeCompiler: true,
  transpileDependencies: true,
  pages: {
    index: {
      entry: isProd ? 'src/design/loader.js' : 'src/design/main.js',
      template: 'public/index.html',
      filename: 'index.html',
      inject: true // 注入资源引用
    },
    main: {
      entry: 'src/design/main.js',
      template: 'public/index.html',
      filename: 'main.html',
      inject: true // 注入资源引用
    }
  },
  publicPath: isProd ? '././' : '/',
  assetsDir: 'static',
  productionSourceMap: false,
  filenameHashing: false, // 取消hash
  css: {
    // 将组件内部的css提取到一个单独的css文件（只用在生产环境）
    // 也可以是传递给 extract-text-webpack-plugin 的选项对象
    extract: false, // 独立css
    // sourceMap: false, // 允许生成 CSS source maps? pass custom options to pre-processor loaders. e.g. to pass options to // sass-loader, use { sass: { ... } }
    // loaderOptions: {}, // Enable CSS modules for all css / pre-processor files. // This option does not affect *.vue files.
    // modules: false
  },
  configureWebpack: () => {
    return {
      output: {
        libraryTarget: 'umd',
        library: 'package',
        // filename: `[name].${version}.${timestamp}.js`,
        // chunkFilename: `[name].${version}.${timestamp}.js`
      },
      externals: isProd ? [
        {
          'vue': 'vue',
          'vue-router': 'vue-router',
          'vuex': 'vuex',
          'system': 'system',
          'axios': 'axios',
          'iview': 'iview',
          'moment': 'moment',
          'echarts': 'echarts',
          'element-ui': 'element-ui',
          'less': 'less',
          '@babel/standalone': '@babel/standalone'
        },
        /^@daelui\/(?!pigjs)/,
        function(context, request, callback) {
          if (/vendor\/monaco-editor$|vendor\/(vue-)?quill|vendor\/highlightjs/.test(request)) {
            return callback(null, request.replace(/.*vendor\//, ''))
          }
          if (/babel.min.js/.test(request)) {
            return callback(null, 'babel.min.js')
          }
          callback()
        },
        function(context, request, callback) {
          if (/^@daelui\/dogui\/dist|element-ui\/lib\/theme/.test(request)) {
            return callback(null, request)
          }
          callback()
        }
      ] : {}
    }
  }
})
// const utils = require('./build/utils.js')
// const { join } = require('path')
// const aliasConfig = require('./config/alias')
// const { externalMap } = require('./config/index')

// const setAlias = (config) => {
//   const { alias } = aliasConfig
//   Object.keys(alias).forEach((key) => {
//     config.resolve.alias.set(key, alias[key])
//   })
// }

// module.exports = {
//   lintOnSave: !utils.isProduct,
//   runtimeCompiler: true,
//   productionSourceMap: false,
//   pages: {
//     index: {
//       entry: 'src/design/main.js',
//       template: 'public/index.html',
//       filename: 'index.html'
//     }
//   },
//   css: {
//     extract: true,
//     loaderOptions: {

//     }
//   },
//   // 扩展 webpack 配置，使 packages 加入编译
//   chainWebpack: (config) => {
//     config.module
//       .rule('js')
//       .include.add(join(process.cwd(), 'src'))
//       .end()
//     // 设置别名
//     setAlias(config)
//     // 关闭利用空余带宽加载文件 提升首页速度
//     config.plugins.delete('preload')
//     config.plugins.delete('prefetch')
//     // 配置别名
//     config.extensions = aliasConfig.resolve
//     config.module
//       .rule('js')
//       .include.add(/packages/)
//       .end()
//       .use('babel')
//       .loader('babel-loader')
//       .tap((options) => {
//         return options
//       })
//     // config.when(utils.isProduct, (config) => {
//     //   // 开启图片压缩
//     //   config.module
//     //     .rule('images')
//     //     .use('image-webpack-loader')
//     //     .loader('image-webpack-loader')
//     //     .options({
//     //       bypassOnDebug: true
//     //     })
//     //     .end()
//     // })
//   },
//   configureWebpack: (config) => {
//     if (utils.isProduct) {
//       config.externals = externalMap
//     }
//   }
// }
